home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DTransform.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  10.8 KB  |  368 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DTransform.h
  3.  
  4.      Contains:    Q3Transform routines                                                 
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DTRANSFORM__
  18. #define __QD3DTRANSFORM__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26. #if PRAGMA_ONCE
  27. #pragma once
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #if PRAGMA_IMPORT
  35. #pragma import on
  36. #endif
  37.  
  38. #if PRAGMA_STRUCT_ALIGN
  39.     #pragma options align=power
  40. #elif PRAGMA_STRUCT_PACKPUSH
  41.     #pragma pack(push, 2)
  42. #elif PRAGMA_STRUCT_PACK
  43.     #pragma pack(2)
  44. #endif
  45.  
  46. #if PRAGMA_ENUM_ALWAYSINT
  47.     #pragma enumsalwaysint on
  48. #elif PRAGMA_ENUM_OPTIONS
  49.     #pragma option enum=int
  50. #elif PRAGMA_ENUM_PACK
  51.     #if __option(pack_enums)
  52.         #define PRAGMA_ENUM_PACK__QD3DTRANSFORM__
  53.     #endif
  54.     #pragma options(!pack_enums)
  55. #endif
  56.  
  57. /******************************************************************************
  58.  **                                                                             **
  59.  **                            Transform Routines                                 **
  60.  **                                                                             **
  61.  *****************************************************************************/
  62. EXTERN_API_C( TQ3ObjectType )
  63. Q3Transform_GetType                (TQ3TransformObject     transform);
  64.  
  65. EXTERN_API_C( TQ3Matrix4x4 *)
  66. Q3Transform_GetMatrix            (TQ3TransformObject     transform,
  67.                                  TQ3Matrix4x4 *            matrix);
  68.  
  69. EXTERN_API_C( TQ3Status )
  70. Q3Transform_Submit                (TQ3TransformObject     transform,
  71.                                  TQ3ViewObject             view);
  72.  
  73.  
  74. /******************************************************************************
  75.  **                                                                             **
  76.  **                            MatrixTransform Routines                         **
  77.  **                                                                             **
  78.  *****************************************************************************/
  79. EXTERN_API_C( TQ3TransformObject )
  80. Q3MatrixTransform_New            (const TQ3Matrix4x4 *    matrix);
  81.  
  82. EXTERN_API_C( TQ3Status )
  83. Q3MatrixTransform_Submit        (const TQ3Matrix4x4 *    matrix,
  84.                                  TQ3ViewObject             view);
  85.  
  86. EXTERN_API_C( TQ3Status )
  87. Q3MatrixTransform_Set            (TQ3TransformObject     transform,
  88.                                  const TQ3Matrix4x4 *    matrix);
  89.  
  90. EXTERN_API_C( TQ3Status )
  91. Q3MatrixTransform_Get            (TQ3TransformObject     transform,
  92.                                  TQ3Matrix4x4 *            matrix);
  93.  
  94.  
  95. /******************************************************************************
  96.  **                                                                             **
  97.  **                            RotateTransform Data                             **
  98.  **                                                                             **
  99.  *****************************************************************************/
  100.  
  101. struct TQ3RotateTransformData {
  102.     TQ3Axis                         axis;
  103.     float                             radians;
  104. };
  105. typedef struct TQ3RotateTransformData    TQ3RotateTransformData;
  106. /******************************************************************************
  107.  **                                                                             **
  108.  **                            RotateTransform Routines                         **
  109.  **                                                                             **
  110.  *****************************************************************************/
  111. EXTERN_API_C( TQ3TransformObject )
  112. Q3RotateTransform_New            (const TQ3RotateTransformData * data);
  113.  
  114.  
  115. EXTERN_API_C( TQ3Status )
  116. Q3RotateTransform_Submit        (const TQ3RotateTransformData * data,
  117.                                  TQ3ViewObject             view);
  118.  
  119. EXTERN_API_C( TQ3Status )
  120. Q3RotateTransform_SetData        (TQ3TransformObject     transform,
  121.                                  const TQ3RotateTransformData * data);
  122.  
  123. EXTERN_API_C( TQ3Status )
  124. Q3RotateTransform_GetData        (TQ3TransformObject     transform,
  125.                                  TQ3RotateTransformData * data);
  126.  
  127. EXTERN_API_C( TQ3Status )
  128. Q3RotateTransform_SetAxis        (TQ3TransformObject     transform,
  129.                                  TQ3Axis                 axis);
  130.  
  131. EXTERN_API_C( TQ3Status )
  132. Q3RotateTransform_SetAngle        (TQ3TransformObject     transform,
  133.                                  float                     radians);
  134.  
  135. EXTERN_API_C( TQ3Status )
  136. Q3RotateTransform_GetAxis        (TQ3TransformObject     renderable,
  137.                                  TQ3Axis *                axis);
  138.  
  139. EXTERN_API_C( TQ3Status )
  140. Q3RotateTransform_GetAngle        (TQ3TransformObject     transform,
  141.                                  float *                radians);
  142.  
  143.  
  144. /******************************************************************************
  145.  **                                                                             **
  146.  **                    RotateAboutPointTransform Data                             **
  147.  **                                                                             **
  148.  *****************************************************************************/
  149.  
  150. struct TQ3RotateAboutPointTransformData {
  151.     TQ3Axis                         axis;
  152.     float                             radians;
  153.     TQ3Point3D                         about;
  154. };
  155. typedef struct TQ3RotateAboutPointTransformData TQ3RotateAboutPointTransformData;
  156. /******************************************************************************
  157.  **                                                                             **
  158.  **                    RotateAboutPointTransform Routines                         **
  159.  **                                                                             **
  160.  *****************************************************************************/
  161. EXTERN_API_C( TQ3TransformObject )
  162. Q3RotateAboutPointTransform_New    (const TQ3RotateAboutPointTransformData * data);
  163.  
  164. EXTERN_API_C( TQ3Status )
  165. Q3RotateAboutPointTransform_Submit (const TQ3RotateAboutPointTransformData * data,
  166.                                  TQ3ViewObject             view);
  167.  
  168. EXTERN_API_C( TQ3Status )
  169. Q3RotateAboutPointTransform_SetData (TQ3TransformObject  transform,
  170.                                  const TQ3RotateAboutPointTransformData * data);
  171.  
  172. EXTERN_API_C( TQ3Status )
  173. Q3RotateAboutPointTransform_GetData (TQ3TransformObject  transform,
  174.                                  TQ3RotateAboutPointTransformData * data);
  175.  
  176. EXTERN_API_C( TQ3Status )
  177. Q3RotateAboutPointTransform_SetAxis (TQ3TransformObject  transform,
  178.                                  TQ3Axis                 axis);
  179.  
  180. EXTERN_API_C( TQ3Status )
  181. Q3RotateAboutPointTransform_GetAxis (TQ3TransformObject  transform,
  182.                                  TQ3Axis *                axis);
  183.  
  184.  
  185. EXTERN_API_C( TQ3Status )
  186. Q3RotateAboutPointTransform_SetAngle (TQ3TransformObject  transform,
  187.                                  float                     radians);
  188.  
  189. EXTERN_API_C( TQ3Status )
  190. Q3RotateAboutPointTransform_GetAngle (TQ3TransformObject  transform,
  191.                                  float *                radians);
  192.  
  193.  
  194. EXTERN_API_C( TQ3Status )
  195. Q3RotateAboutPointTransform_SetAboutPoint (TQ3TransformObject  transform,
  196.                                  const TQ3Point3D *        about);
  197.  
  198. EXTERN_API_C( TQ3Status )
  199. Q3RotateAboutPointTransform_GetAboutPoint (TQ3TransformObject  transform,
  200.                                  TQ3Point3D *            about);
  201.  
  202.  
  203. /******************************************************************************
  204.  **                                                                             **
  205.  **                    RotateAboutAxisTransform Data                             **
  206.  **                                                                             **
  207.  *****************************************************************************/
  208.  
  209. struct TQ3RotateAboutAxisTransformData {
  210.     TQ3Point3D                         origin;
  211.     TQ3Vector3D                     orientation;
  212.     float                             radians;
  213. };
  214. typedef struct TQ3RotateAboutAxisTransformData TQ3RotateAboutAxisTransformData;
  215. /******************************************************************************
  216.  **                                                                             **
  217.  **                    RotateAboutAxisTransform Routines                         **
  218.  **                                                                             **
  219.  *****************************************************************************/
  220. EXTERN_API_C( TQ3TransformObject )
  221. Q3RotateAboutAxisTransform_New    (const TQ3RotateAboutAxisTransformData * data);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3RotateAboutAxisTransform_Submit (const TQ3RotateAboutAxisTransformData * data,
  225.                                  TQ3ViewObject             view);
  226.  
  227. EXTERN_API_C( TQ3Status )
  228. Q3RotateAboutAxisTransform_SetData (TQ3TransformObject     transform,
  229.                                  const TQ3RotateAboutAxisTransformData * data);
  230.  
  231. EXTERN_API_C( TQ3Status )
  232. Q3RotateAboutAxisTransform_GetData (TQ3TransformObject     transform,
  233.                                  TQ3RotateAboutAxisTransformData * data);
  234.  
  235.  
  236. EXTERN_API_C( TQ3Status )
  237. Q3RotateAboutAxisTransform_SetOrientation (TQ3TransformObject  transform,
  238.                                  const TQ3Vector3D *    axis);
  239.  
  240. EXTERN_API_C( TQ3Status )
  241. Q3RotateAboutAxisTransform_GetOrientation (TQ3TransformObject  transform,
  242.                                  TQ3Vector3D *            axis);
  243.  
  244.  
  245. EXTERN_API_C( TQ3Status )
  246. Q3RotateAboutAxisTransform_SetAngle (TQ3TransformObject  transform,
  247.                                  float                     radians);
  248.  
  249. EXTERN_API_C( TQ3Status )
  250. Q3RotateAboutAxisTransform_GetAngle (TQ3TransformObject  transform,
  251.                                  float *                radians);
  252.  
  253.  
  254. EXTERN_API_C( TQ3Status )
  255. Q3RotateAboutAxisTransform_SetOrigin (TQ3TransformObject  transform,
  256.                                  const TQ3Point3D *        origin);
  257.  
  258. EXTERN_API_C( TQ3Status )
  259. Q3RotateAboutAxisTransform_GetOrigin (TQ3TransformObject  transform,
  260.                                  TQ3Point3D *            origin);
  261.  
  262.  
  263. /******************************************************************************
  264.  **                                                                             **
  265.  **                            ScaleTransform Routines                             **
  266.  **                                                                             **
  267.  *****************************************************************************/
  268. EXTERN_API_C( TQ3TransformObject )
  269. Q3ScaleTransform_New            (const TQ3Vector3D *    scale);
  270.  
  271. EXTERN_API_C( TQ3Status )
  272. Q3ScaleTransform_Submit            (const TQ3Vector3D *    scale,
  273.                                  TQ3ViewObject             view);
  274.  
  275. EXTERN_API_C( TQ3Status )
  276. Q3ScaleTransform_Set            (TQ3TransformObject     transform,
  277.                                  const TQ3Vector3D *    scale);
  278.  
  279. EXTERN_API_C( TQ3Status )
  280. Q3ScaleTransform_Get            (TQ3TransformObject     transform,
  281.                                  TQ3Vector3D *            scale);
  282.  
  283.  
  284. /******************************************************************************
  285.  **                                                                             **
  286.  **                            TranslateTransform Routines                         **
  287.  **                                                                             **
  288.  *****************************************************************************/
  289. EXTERN_API_C( TQ3TransformObject )
  290. Q3TranslateTransform_New        (const TQ3Vector3D *    translate);
  291.  
  292. EXTERN_API_C( TQ3Status )
  293. Q3TranslateTransform_Submit        (const TQ3Vector3D *    translate,
  294.                                  TQ3ViewObject             view);
  295.  
  296. EXTERN_API_C( TQ3Status )
  297. Q3TranslateTransform_Set        (TQ3TransformObject     transform,
  298.                                  const TQ3Vector3D *    translate);
  299.  
  300. EXTERN_API_C( TQ3Status )
  301. Q3TranslateTransform_Get        (TQ3TransformObject     transform,
  302.                                  TQ3Vector3D *            translate);
  303.  
  304. /******************************************************************************
  305.  **                                                                             **
  306.  **                            QuaternionTransform Routines                     **
  307.  **                                                                             **
  308.  *****************************************************************************/
  309. EXTERN_API_C( TQ3TransformObject )
  310. Q3QuaternionTransform_New        (const TQ3Quaternion *    quaternion);
  311.  
  312. EXTERN_API_C( TQ3Status )
  313. Q3QuaternionTransform_Submit    (const TQ3Quaternion *    quaternion,
  314.                                  TQ3ViewObject             view);
  315.  
  316. EXTERN_API_C( TQ3Status )
  317. Q3QuaternionTransform_Set        (TQ3TransformObject     transform,
  318.                                  const TQ3Quaternion *    quaternion);
  319.  
  320. EXTERN_API_C( TQ3Status )
  321. Q3QuaternionTransform_Get        (TQ3TransformObject     transform,
  322.                                  TQ3Quaternion *        quaternion);
  323.  
  324.  
  325. /******************************************************************************
  326.  **                                                                             **
  327.  **                            ResetTransform Routines                             **
  328.  **                                                                             **
  329.  *****************************************************************************/
  330. EXTERN_API_C( TQ3TransformObject )
  331. Q3ResetTransform_New            (void);
  332.  
  333. EXTERN_API_C( TQ3Status )
  334. Q3ResetTransform_Submit            (TQ3ViewObject             view);
  335.  
  336.  
  337.  
  338.  
  339.  
  340. #if PRAGMA_ENUM_ALWAYSINT
  341.     #pragma enumsalwaysint reset
  342. #elif PRAGMA_ENUM_OPTIONS
  343.     #pragma option enum=reset
  344. #elif defined(PRAGMA_ENUM_PACK__QD3DTRANSFORM__)
  345.     #pragma options(pack_enums)
  346. #endif
  347.  
  348. #if PRAGMA_STRUCT_ALIGN
  349.     #pragma options align=reset
  350. #elif PRAGMA_STRUCT_PACKPUSH
  351.     #pragma pack(pop)
  352. #elif PRAGMA_STRUCT_PACK
  353.     #pragma pack()
  354. #endif
  355.  
  356. #ifdef PRAGMA_IMPORT_OFF
  357. #pragma import off
  358. #elif PRAGMA_IMPORT
  359. #pragma import reset
  360. #endif
  361.  
  362. #ifdef __cplusplus
  363. }
  364. #endif
  365.  
  366. #endif /* __QD3DTRANSFORM__ */
  367.  
  368.